package com.elitel.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.elitel.frame.main.entity.SysException;
import com.elitel.frame.main.entity.vo.ExceptionVo;
/**
 * 异常处理工具类
 * @author dingdaifu
 *
 */
@Component
public class ExceptionManagerUtil {
	
	
	/**
	 * 
	 * @param cense
	 * @param map
	 * @return
	 */
	public static ExceptionVo getException(Exception cense,Map<String, SysException> map){
		ExceptionVo exceptionVO = new ExceptionVo();
		Exception exception = (Exception)cense;
		//起始位置
		int astartIndex = getCharacterPosition(exception.getClass().getName(), 2, ".");
		String xx =exception.getClass().getName().substring(astartIndex+1);
		 for(Map.Entry<String, SysException> entry:map.entrySet()){
			 if (entry.getKey().equals(xx)) {
					exceptionVO.setValue(entry.getValue().getExceptionDesc());
					exceptionVO.setDesc(entry.getValue().getCode());
					exceptionVO.setErrorType(entry.getValue().getExceptionType());
			 }else{
				 exceptionVO.setValue("999");
				 exceptionVO.setDesc("其他未知异常");
				 exceptionVO.setErrorType("9");
			 }
		 }
		 return exceptionVO;
	};
	/**
	 * 获取某个字符在字符串第几次出现的位置
	 * @param exceptionName 字符串
	 * @param times 第几次
	 * @param cha 字符
	 * @return
	 */
	public static int getCharacterPosition(String exceptionName ,int times ,String cha){
		List<Integer> list = new ArrayList<>();
		int index = 0;
		char arr[] = exceptionName.toCharArray();
		char add[] = cha.toCharArray();
		for(int i=0;i<exceptionName.length();i++){
			if (arr[i]==add[0]) {
				list.add(i);
			}
		}
		return list.get(times-1);
	 }
	
}
